---
title: Package
summary: nuspec identity, version, dependencies, shipped content, feed, and build pipeline for PdfAPI.Client.
status: draft
owner: SAIF Doc Gen
last_reviewed: 2026-09-17
---

# Package

`PdfAPI.Client` is packaged from `Scripts\PdfAPI.Client\PdfAPI.Client.nuspec`, ships both compiled assemblies and C# source, and is built and released by a dedicated `AppType: nuget` pipeline separate from the API's own pipeline.

## Identity

| Field | Value |
| --- | --- |
| Package id | `PdfAPI.Client` |
| Version | `1.0.0.3` |
| Authors | `andmil` |
| Owners | Not specified in the manifest |
| Description | Not captured beyond the identity fields recorded above |
| Requires license acceptance | Not specified in the manifest |
| nuspec file | `Scripts\PdfAPI.Client\PdfAPI.Client.nuspec` |
| Project file | `PdfAPI.Client\PdfAPI.Client.csproj` |

## Manifest selection

| Candidate nuspec | Kind | Selected | Reason |
| --- | --- | --- | --- |
| `Scripts\PdfAPI.Client\PdfAPI.Client.nuspec` | Packaging manifest | Yes | Literal `<id>PdfAPI.Client</id>`, literal `<version>1.0.0.3</version>`, populated `<dependencies>` (3 entries), populated `<files>` (4 entries) |
| `PdfAPI.Client\PdfApi.Client.nuspec` | Token template | No | `<id>$id$</id>`, `<version>$version$</version>`, `<title>$title$</title>`, `<authors>$author$</authors>`, `<copyright>$copyright$</copyright>`, and an empty `<files/>` element; included in the project only as `<None Include="PdfApi.Client.nuspec" />` |

A casing trap is present and confirmed: the token template is `PdfApi.Client.nuspec` (lower-case `pi`) inside the `PdfAPI.Client` project folder, while the real manifest is `PdfAPI.Client.nuspec` (upper-case `API`) under `Scripts\`. The two manifests were not merged — all dependency and `<files>` facts on this page come solely from the selected manifest. No assembly-name fallback was needed: the selected manifest's literal `<id>` matches both the pipeline `AppName` and the project `<AssemblyName>`.

## Dependencies

| Dependency | Version | Purpose |
| --- | --- | --- |
| `SAIF.Framework.Common` | `1.0` (open lower bound); restored `2.0.22074.3` | Shared framework types |
| `SAIF.Web.API.Clients` | `1.0` (open lower bound); restored `2.0.22307.1` | `JsonHttpClient` and `ClientInfo` transport surface |
| `iTextSharp` | `5.5.11` | Required by the in-process `PdfClientService` members shipped in `PdfAPI.Core`; a third-party dependency specific to this client |

The nuspec's open `version="1.0"` lower bound for the two SAIF dependencies differs from the restored `2.0.x` versions actually used by the project — recorded as a fact.

See [Dependencies](dependencies.md) for the full dependency landscape including transitive and build-time references.

## Shipped content

> **This package ships source alongside the compiled assembly.** In addition to
> `lib\net45\*.dll`, the nuspec `<files>` element maps `src\**\*.cs` targets, so the complete
> C# source of the client and its `PdfAPI.Core` contracts assembly is installed into every
> consuming project. Consumers can read and copy internal implementation, the shipped source can
> drift from the shipped binary, and any embedded comment ships with the package. See
> [Tech debt](tech-debt.md).

| Source | Target | Content |
| --- | --- | --- |
| `..\..\bin\PdfAPI.Client.dll` | `lib\net45\PdfAPI.Client.dll` | Compiled client |
| `..\..\bin\PdfAPI.Core.dll` | `lib\net45\PdfAPI.Core.dll` | Shared contracts assembly |
| `..\..\PdfAPI.Client\**\*.cs` | `src\PdfAPI.Client` | Client source code |
| `..\..\PdfAPI.Core\**\*.cs` | `src\PdfAPI.Core` | Contracts source code |

No `.pdb` files are shipped. The packaged `lib\net45` folder does not match the project's `net462` compile target (`<TargetFrameworkVersion>v4.6.2</TargetFrameworkVersion>`) — recorded as a packaging inconsistency.

## Build and release pipeline

| Attribute | Value |
| --- | --- |
| `AppType` | `nuget` |
| `AppName` | `PdfAPI.Client` |
| `SolutionPath` | `PdfAPI.Client.sln` |
| `ProjectPath` | `PdfAPI.Client\PdfAPI.Client.csproj` |
| `BuildConfiguration` | `debug` — the release pipeline packs a Debug-configuration build; `BuildPlatform` is empty |
| `IncludeReferencedProjects` | `true` |
| Build pipeline | `Pipelines\build-client.yml` |
| Build variables | `Pipelines\build-vars-client.yml` |
| Release pipeline | `Pipelines\release-client.yml` |

### Pipeline templates

| Stage | Template | Purpose |
| --- | --- | --- |
| Build | `Steps/build-steps-nuget.yml@templates` | Restore, build, and pack the package |
| Build | `Steps/build-version-dat.yml@templates` | Version stamping, preceding the nuget build step |
| Build | `Steps/build-steps-tag-repo.yml@templates` | Repository tagging, following the nuget build step |
| Release | `/Stages/deploy-stages-nuget.yml@templates` | Publishes the package to the SAIF NuGet feed |

The template repository is `SAIF/YAML_Templates` (resource alias `templates`, `ref` unset, so the default branch is used) for both the build and release pipelines. `AppType: nuget` is the correct variable value for this pipeline, but it is not by itself evidence that a project is an API client — `Pdf.Local.Client` is also built by an `AppType: nuget` pipeline and performs no HTTP.

### Artifacts

| Artifact | Variable | Notes |
| --- | --- | --- |
| Pre-release | `ArtifactNamePreRelease` | Prerelease suffix parameter default `alpha` |
| Release | `ArtifactNameRelease` | Product version parameter default `2.0` |

Build triggers are `develop` and `master` for the build pipeline; the release pipeline has `trigger: none` and instead consumes the `IT.CoreServices.PDFAPI.Client.Build` pipeline artifact.
Build number format is `2.$(Year:yy)$(DayOfYear)$(rev:.r)`.

## Feed

| Field | Value |
| --- | --- |
| Feed | Not declared in repository files; the SAIF internal feed is the expected destination based on the shared `/Stages/deploy-stages-nuget.yml@templates` release template* |
| Publish trigger | Not determined from source — the push target is defined inside the external `SAIF/YAML_Templates` repository, which this analysis does not follow** |

`nuget.config` at the repository root sets `repositoryPath = packages` only and declares no custom package sources.

Manifest version `1.0.0.3` versus assembly version `1.0.0.0` (`PdfAPI.Client\Properties\AssemblyInfo.cs` lines 30–31) versus the pipeline-generated build number are three independent version sources — recorded on [Tech debt](tech-debt.md).

## Related documentation
- [Client index](index.md)
- [Overview](overview.md)
- [Architecture](architecture.md)
- [Client reference](reference.md)
- [Endpoint map](endpoint-map.md)
- [Consumption](consumption.md)
- [Contracts](contracts.md)
- [Dependencies](dependencies.md)
- [Business rules](business-rules.md)
- [Tech debt](tech-debt.md)

> **Note:** Statements marked with `*` were inferred from code structure, naming
> conventions, or contextual evidence where direct confirmation was not available
> in source artifacts. Statements marked with `**` could not be confirmed; treat
> as unknown until verified.

## Sources
- `Scripts\PdfAPI.Client\PdfAPI.Client.nuspec`
- `PdfAPI.Client\PdfApi.Client.nuspec`
- `PdfAPI.Client\PdfAPI.Client.csproj`
- `PdfAPI.Client\packages.config`
- `PdfAPI.Client\Properties\AssemblyInfo.cs`
- `Pipelines\build-vars-client.yml`
- `Pipelines\build-client.yml`
- `Pipelines\release-client.yml`
- `nuget.config`
